package view;

import domain.Customer;
import domain.Medicine;
import proxy.CustomerProxy;
import service.CustomerService;

import java.util.Random;
import java.util.Scanner;

public class CustomerView {
    boolean flag = true;
    private Scanner input = new Scanner(System.in);
    //设置游戏次数
    private int count=3;
    private int sum=0;

    Customer customer = new Customer();
    //new Medicine();
    //中间类 -- 客户端与服务器相连传递信息
    private CustomerService proxy= (CustomerService) CustomerProxy.getProxy(CustomerService.class, "127.0.0.1", 8888);


    //1.直接购药
    public void direct(){
        //显示数据库中的药品信息


        //用户输入需要购买的药物id
        System.out.println("请输入你需要购买的药物id号：");
        //通过proxy与数据库对比是否还有库存，有则返回true，没有则返回false
        boolean b = proxy.direct(customer);
        System.out.println(b?"购买成功，望你早日康复":"购买失败，可以查看购药帮助");
    }

    //2.购药指南
    public void guide(){
        //显示数据库中的三个药物分类表,儿童药,常备药,感冒药


        //用户输入需要购买的药物id
        System.out.println("请输入你需要购买的药物id号：");
        //通过proxy与数据库对比是否还有库存，有则返回true，没有则返回false
        boolean b = proxy.direct(customer);
        System.out.println(b?"购买成功，望你早日康复":"购买失败，可以查看购药帮助");
    }

    //3.积分活动
    private void activity(){
        System.out.println("------------------------积分活动介绍----------------------");
        System.out.println(
                "\t欢迎来到积分活动页面，接下来小助手将向你介绍一下积分活动的玩法，" +
                        "\n用户获得积分的方式有两种一是通过与小助手玩游戏来获得积分，每天" +
                        "只有\n三次机会,二是每次购买药物也会获得相应的积分。" +
                        "积分达到一定的数值后客\n户可以通过积分兑换相应的礼品，" +
                        "如果你需要查看你的积分，你可以通过查看" +
                        "\n个人信息或在积分兑换中进行查看。接下来你可以选择如下步骤：" +
                        "\n\t1.参与积分活动\n\t2.积分兑换");
        System.out.println("-------------------");
        System.out.print("请输入你的选项：");
        int a = input.nextInt();
        while (flag){
            switch (a){
                //积分活动
                case 1:
                    if (count!=0){
                        game();//游戏方法
                    }else {
                        System.out.println("游戏次数已用完");
                    }
                    break;
                //积分兑换
                case 2:
                    redeem();

            }
        }

    }


    //4.查看顾客信息
    private String help(){
        System.out.println("你的信息如下：");
        //调用数据库信息
        return proxy.check(customer);
    }



    //兑换方法
    private void redeem() {

    }
    private void game() {//游戏方法
        boolean flag1=true;
        while(count>0&&flag1){
            gameMenu();
            int a=input.nextInt();
            switch (a){
                case 1:
                    dice();//掷骰子
                    count-=1;
                    break;
                case 2:
                    rockPaperScissors();//石头剪刀布
                    count-=1;
                    break;
                case 3:
                    blindBox();//抽盲盒
                    count-=1;
                    break;
                case 4:
                    flag1=false;
                    break;
                default:
                    System.out.println("输入错误");
            }
        }
        System.out.println("您共获得"+sum+"积分,游戏次数还剩"+count+"次");

    }

    private void blindBox() {//抽盲盒
        //积分减10

    }

    private void rockPaperScissors() {//石头剪刀布
        Random random = new Random();
        int n=3;
        while (n!=0){
            int i=random.nextInt(3)+1;
            System.out.println("----------------------------------");
            System.out.println("请出拳(还有"+n+"次)");
            System.out.println("1:石头");
            System.out.println("2剪刀");
            System.out.println("3:布");
            int a=input.nextInt();
            switch (i){
                case 1:
                    switch (a){
                        case 1:
                            System.out.println("对方出的石头");
                            System.out.println("平局,获得2点积分");
                            //积分加2
                            sum+=2;
                            break;
                        case 2:
                            System.out.println("对方出的石头");
                            System.out.println("很遗憾,你输了");
                            break;
                        case 3:
                            System.out.println("对方出的石头");
                            System.out.println("恭喜你赢了,获得4点积分");
                            //积分加4
                            sum+=4;
                            break;
                        default:
                            System.out.println("输入错误");
                    }
                    break;
                case 2:
                    switch (a){
                        case 1:
                            System.out.println("对方出的剪刀");
                            System.out.println("恭喜你赢了,获得4点积分");
                            //积分加4
                            sum+=4;
                            break;
                        case 2:
                            System.out.println("对方出的剪刀");
                            System.out.println("平局,获得2点积分");
                            //积分加2
                            sum+=2;
                            break;
                        case 3:
                            System.out.println("对方出的剪刀");
                            System.out.println("很遗憾,你输了");
                            break;
                        default:
                            System.out.println("输入错误");
                    }
                    break;
                case 3:
                    switch (a){
                        case 1:
                            System.out.println("对方出的布");
                            System.out.println("很遗憾,你输了");
                            break;
                        case 2:
                            System.out.println("对方出的布");
                            System.out.println("恭喜你赢了,获得4点积分");
                            //积分加4
                            sum+=4;
                            break;
                        case 3:
                            System.out.println("对方出的布");
                            System.out.println("平局,获得2点积分");
                            //积分加2
                            sum+=2;
                            break;
                        default:
                            System.out.println("输入错误");
                    }
                    break;
            }
            n-=1;
        }
        System.out.println("游戏结束");
    }

    private void dice() {//掷骰子
        Random random = new Random();
        int n=1;
        while (n<=2){
            int i = random.nextInt(12);//生成0到11的随机整数
            System.out.println("第"+n+"次"+"掷出骰子,请选择您的答案:(1:小  2:大)");
            int c=input.nextInt();
            if (i+1<=6){
                switch (c){
                    case 1:
                        System.out.println("恭喜你赢了,获得5点积分");
                        //积分加5
                        sum+=5;
                        break;
                    case 2:
                        System.out.println("你输了");
                        break;
                    default:
                        System.out.println("输入错误");
                }
                System.out.println("骰子点数为:"+(i+1));
                System.out.println("----------------------");
            }else if (i+1>6&&i+1<=12){
                switch (c){
                    case 2:
                        System.out.println("恭喜你赢了,获得5点积分");
                        sum+=5;
                        break;
                    case 1:
                        System.out.println("你输了");
                        break;
                    default:
                        System.out.println("输入错误");
                }
                System.out.println("骰子点数为:"+(i+1));
                System.out.println("----------------------");
            }
            n+=1;
        }
        System.out.println("游戏结束");
    }

    //游戏菜单
    public void gameMenu(){
        System.out.println("------------------------游戏界面------------------------");
        System.out.println("欢迎来到游戏环节,游戏规则如下:");
        System.out.println("每人只能玩三次游戏(不限种类),赢得游戏获得积分");
        System.out.println("请选择你想玩的游戏(还有"+count+"次机会):");
        System.out.println("1:掷骰子(猜大小,小于等于6为小,大于6小于等于12为大)");
        System.out.println("2:石头剪刀布");
        System.out.println("3:抽盲盒");
        System.out.println("4:退出");
        System.out.print("请输入你的选择：");
    }

    //主界面
    public void start(){
        System.out.println("------欢迎使用自助购药系统------");
        System.out.println("1.直接购药");
        System.out.println("2.购药指南");
        System.out.println("3.积分活动");
        System.out.println("4.查看帮助");
        System.out.println("5.退出");
        System.out.println("请输入你的选项：");

        flag = true;
        while (flag){
            int x = input.nextInt();
            switch (x){
                case 1:
                    direct();
                    break;
                case 2:
                    guide();
                    break;
                case 3:
                    activity();
                    break;
                case 4:
                    help();
                    break;
                case 5:
                    //退出
                    System.out.println("输入y退出登录,输入0撤销");
                    String str = input.next();
                    if (str.equals("y") || str.equals("Y")) {
                        System.out.println("感谢你的使用，期待与你下次相遇，我们会继续改进！");
                        System.out.println("退出成功");
                        flag = false;
                        break;
                    }else {
                        System.out.println("退出失败");
                        continue;
                    }
            }
        }

    }





}
